package br.unicesumar.dao.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import br.unicesumar.dao.impl.ProdutoDaoImpl;
import br.unicesumar.persistence.Produto;

@ManagedBean
public class ProdutoBean {

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public List<Produto> getListagemProduto() {
		return listagemProduto;
	}

	public void setListagemProduto(List<Produto> listagemProduto) {
		this.listagemProduto = listagemProduto;
	}

	private Long id;
	private String nome;
	private double preco;

	private Produto produto = new Produto();
	private ProdutoDaoImpl dao = new ProdutoDaoImpl();
	private List<Produto> listagemProduto = new ArrayList<Produto>();

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public double getPreco() {
		return preco;
	}

	public void setPreco(double preco) {
		this.preco = preco;
	}

	public void teste() {
		System.out.println("mensagem de teste");
	}

	public void inserir() {

		FacesContext context = FacesContext.getCurrentInstance();
		try {
			dao.save(produto);
			produto = new Produto();
			context.addMessage(null, new FacesMessage("inserido com sucesso"));
		} catch (Exception e) {
			context.addMessage(null,
					new FacesMessage("Erro ao inserir: " + e.getMessage()));
		}
	}

	public void editarProduto(ActionEvent actionEvent) {
		id = (Long) actionEvent.getComponent().getAttributes().get("id");
		produto = dao.findByID(id);
	}

	public void pesquisarProduto() {
		listagemProduto = dao.pesquisarProdutoPorNome(nome);
	}

	public void guardarSelecao(ActionEvent actionEvent) {
		id = (Long) actionEvent.getComponent().getAttributes().get("id");
	}

	public void remover(ActionEvent actionEvent) {
		FacesContext context = FacesContext.getCurrentInstance();
		if (id == null) {
			context.addMessage(null, new FacesMessage(
					FacesMessage.SEVERITY_WARN, "nenhuma item selecinada", ""));
			return;
		}
		try {
			dao.delete(dao.findByID(id));
			context.addMessage(null, new FacesMessage(
					FacesMessage.SEVERITY_INFO, "Removido com sucesso", ""));
		} catch (Exception e) {
			context.addMessage(null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR,
							"Erro ao remover: " + e.getMessage(), ""));
		}
	}
}
